package test.algorithm.FastSlowPointer;

/**
 * 选择排序
 * @author serenity
 *
 */
public class SelectSort {

	/**
	 * 选择排序
	 * @param list
	 */
	public static  void selectSort(int[] list){
		int min = 0 , temp = 0 , count1=0, count2=0;
		
		//每一轮先选出最小的元素，再判断是否需要移动位置
		for(int i=0;i<list.length;i++){
			min = i;
			
			for(int j=i+1;j<list.length;j++){
				count1++;
				
				//与min比较，找出最小的元素
				if(list[j]<list[min]){
					min = j;
				}
			}
			
			//如果不等于，移动元素位置
			if(min!=i){
				count2++;
				temp = list[min];
				list[min] = list[i];
				list[i] = temp;
			}
			
		}
		
		System.out.println("比较"+count1+"次，移动"+count2+"次");
	}
	
	public static void main(String[] args) {
		int[] list = {5,2,6,0,3,9,1,7,4,8};
		selectSort(list);
		
		System.out.print("打印数组：");
		for(int i :list){
			System.out.print(i+" ");
		}
	}

}
